/**
 * @Author:Nico
 */
import { findPrevParent } from '@ve/utils/utils'

export function openPdaLayerId(vm, layerId, done) {
  let getNowPageData = vm.$store.getters['preview/getNowPageData']
  //查找图层id的父级
  let parentObj = findPrevParent([getNowPageData], layerId, '_id', 'list')

  if (parentObj) {
    //查询到当前模块数据
    let layerObj = parentObj.list.find((v) => v._id === layerId)
    //图层数据
    let _layersData = {}
    let _requestData = {}
    // 提交 dispatch 触发页面组件状态更新（条件判断 -- nzl; dataObj 为传递的数据对象，moduleObj 为目标组件对象
    // vm.$store.dispatch('pageModulesState/setPageModulesStateByObj', { dataObj: _requestData, moduleObj: layerObj })
    // vm.$store.dispatch('pageModulesState/setPageModulesStatesByObj', {
    //   pageId: vm.$store.getters['preview/getNowPageId'],
    //   pageState: { dataObj: _requestData, moduleObj: layerObj },
    // })

    //当前图层父级
    layerObj._parentId = parentObj._id
    //可以通过showSubPageId来定位修改值
    parentObj.showSubPageId = layerObj._id

    parentObj.subPage.dialogHeight = layerObj.subPage.dialogHeight
    parentObj.subPage.dialogWidth = layerObj.subPage.dialogWidth
    parentObj.subPage.clickToClose = layerObj.subPage.clickToClose || false

    parentObj.subPage.type = layerObj.type
    if (layerObj.type == 1) {
      parentObj.subPage.info = layerObj
    } else {
      parentObj.subPage.dialog = layerObj
    }

    parentObj.hasSubPageShow = true

    setTimeout(() => {
      layerObj.data = {
        ...layerObj.data,
        ...{
          //所有图层选择后的数据
          layersData: _layersData,
        },
        ...{
          requestData: _requestData,
        },
      }
      // 将下一次执行队列放入定时器 保证先触发 data 改变的动作
      setTimeout(() => {
        console.log('打开页面执行完成')
        done(null, {})
      }, 0)

      vm.$pub(`SplitpaneResized`, true)
    }, 1)
  } else {
    // 这里你会推到的是顶级页面 所以是没有父级的 所以走的下面这个done
    // 但是你下面这个就直接走了事件动作 你的线程一直被时间动作占着的 所以是时间动作走完了之后才走的打开图层里面的代码逻辑
    // 你的首页这时候才渲染
    // 上次给你讲的微任务和宏任务忘了没， 就是这一块的知识点 改变他代码执行的顺序哦哦哦，那我先测试下初次进来页面？
    console.log('打开图层----------- 未找到父级')
    setTimeout(() => {
      done(null, {})
    }, 6)
  }
}
